package cn.wuxuan.util;

import java.util.List;

//通用DAO :根据不同的SQL,参数,对应的JavaBean字节码通过通用功能返回对应的结果
public interface BaseDao {
	/**
	 * 根据 字节码实例,sql,参数进行单行查询,返回对应字节码实例的 对象
	 * @param clz  字节码实例 如 : SysUser.class
	 * @param sql  sql语句  select * from xxx 表 where id = ?
	 * @param params 参数  id=1
	 * @return 对应的字节码实例的反射创建的对象  SysUser 对象
	 */
	<T> T selectSingleRow(Class<T> clz,String sql,Object ... params);
	
	/**
	 * 通用 DML操作(增,删,改)
	 * @param t  任意 对象  SysUser对象  Student对象  Teacher对象
	 * @param sql sql语句
	 * @param params 参数
	 * @return 返回受影响的函数 一般单行插入都返回1
	 */
	int update(String sql,Object...params);
	
	/**
	 * 根据条件多行查询
	 * @param clz 字节码实例
	 * @param sql sql
	 * @param params 条件参数
	 * @return 封装有多个 对象的list集合
	 */
	<T> List<T> selectListRow(Class<T> clz,String sql,Object...params);
	/**
	 * 根据条件查询数据总数
	 * @param sql sql语句
	 * @param params 参数
	 * @return 数据总数量
	 */
	Integer selectTotalCount(String sql,Object...params);
}
